// 新增一个构造函数init ,用jQuery函数返回new init得到init的实例化对象,new jQuery就可以得到new init 
// 这种方法中，相当于把jQuery当成中间转化用的，真实的方法都在init上

;(function(a,undefined){
    // 构造函数init
    let init = function(el){
        // 获取所有的div标签
        let els = document.querySelectorAll(el)
        // 获取标签存入构造函数中
        for(let i = 0;i<els.length;i++){
            this[i] = els[i]
        }
        // let arr = []
        // arr.push.apply(this,els)
        // 给构造函数增加length属性
        this.length = els.length
    }
    
     // 构造函数原理，获取
    let jQuery = function(el){
        // 通过调用jQuery返回init,实例化init
        return new init(el)
    }

    // 给jQuery增加一个静态方法，通过这个静态方法，可以快速给init添加原型方法
    jQuery.extend = function(object){
        //object {方法名(){},...}
        for(let key in object){
            init.prototype[key] = object[key]
        }
    }
    
    init.prototype = {
        // 更改原型，设置css方法
        css(cssAttr,cssVal){
            for(let i = 0;i<this.length;i++){
                this[i].style[cssAttr] = cssVal  //注意变量的解析
            }
            // 方便链式调用
            return this
        },
        attr(options){  },
        addClass(options){
            for(let i = 0;i<this.length;i++){
                this[i].style.className = options  //注意变量的解析
            }
        },

        ajax(options){  }

    }
    a.jQuery = a.$ = jQuery
})(window)
// console.log(jQuery);
// new出实例化对象，
let jqObj = $('div')//此时的jqObj其实是一个init的实例化对象，调用方法也是直接调用init上的方法